package com.zj.core.tools

import android.content.Context
import android.graphics.Point
import android.os.Build
import android.util.DisplayMetrics
import android.view.View
import android.view.WindowManager

/**
 * 日期：2019年3月20日
 * 公司：北京子杰宝贝科技有限公司
 * 地址：北京市朝阳区朝阳农场
 * 开发者：达选文
 *
 *
 * 主体功能：View坐标相关类
 */
class ViewPosition {

    /**
     * 获取View在X轴绝对坐标
     * @return
     */
    fun getXPosition(mView: View): Int {
        val mPositionX = IntArray(2)
        mView.getLocationInWindow(mPositionX)      //获取在当前窗口内X轴的绝对坐标
        return mPositionX[0]
    }

    /**
     * 获取View在Y轴绝对坐标
     * @return
     */
    fun getYPosition(mView: View): Int {
        val mPositionY = IntArray(2)
        mView.getLocationOnScreen(mPositionY)       //获取在整个屏幕内y轴的绝对坐标
        return mPositionY[1]
    }

    fun getScreenWidth(context: Context): Int {
        return getScreenSize(context)[0]
    }

    fun getScreenHeight(context: Context): Int {
        return getScreenSize(context)[1]
    }

    private fun getScreenSize(context: Context): IntArray {
        var windowManager: WindowManager?
        try {
            windowManager = context.getSystemService("window") as WindowManager
        } catch (var6: Throwable) {
            windowManager = null
        }

        windowManager?.let {
            val display = windowManager.defaultDisplay
            if (Build.VERSION.SDK_INT < 13) {
                val t1 = DisplayMetrics()
                display.getMetrics(t1)
                return intArrayOf(t1.widthPixels, t1.heightPixels)
            } else {
                try {
                    val t = Point()
                    display.javaClass.getMethod("getRealSize", *arrayOf<Class<*>>(Point::class.java)).apply {
                        isAccessible = true
                        invoke(display, *arrayOf<Any>(t))
                    }
                    return intArrayOf(t.x, t.y)
                } catch (var5: Throwable) {
                    return intArrayOf(0, 0)
                }

            }
        }?:let {
            return intArrayOf(0, 0)
        }
    }
}
